1. Field of the Invention
The present invention relates generally to computerized printing systems and methods, and more particularly to a new printing method and printing apparatus having an improved printer controller cooperatively coupled with associated computer resident printer driver software, the printer controller having reduced computational and memory requirements, the computer resident printer driver software being used to perform data processing steps normally accomplished by the printer controller.
2. Brief Description of the Prior Art
Non-impact printers such as laser printers have three major components. The first component is the mechanical portion consisting of the box, the paper tray, the moving mechanism to control paper flow, and the printing mechanism. The second component is the engine that performs the actual image marking process. This process deposits toner (equivalent to ink) on to the paper at the correct places with the help of a laser. The third component is the printer controller which receives data from the host computer, processes the data, and provides the data to the engine. Laser printers have key features such as high print quality, fast printing speed, and quiet printing mechanism.
The information generated by the application software on a host computer is typically a set of drawing commands describing the page contents. The printer driver program on the host computer translates these drawing commands to printer commands which are commands specific to a particular printer. The printer driver generates printer commands that tells the printer how to draw text, graphics, and images rather then all the actual dots that would compose the visual image of the text, graphics, and images. These dots are called bit map data or image data. These commands are sent to the printer controller of the printer.
The printer controller receives drawing commands from the host computer and converts the commands to bit map data. This conversion is called "Rendering". Typically, data equivalent to one page of information is rendered and stored in a bit map buffer. This data is read by the engine interface of the controller and serialized before sending out as video signal to the print engine for printing.
In conventional printer controllers of this type, as shown in FIG. 1, a host interface on the printer controller 11 receives printer commands from the host computer, and a command buffer 12 stores the printer commands. A central processing unit ("CPU") 13 reads the printer commands from the command buffer and executes the printer commands. In the execution of the printer commands, the CPU may access various task programs and font memory. A bit map buffer 16 stores the image data and an engine interface 17 serializes and delivers image data to the printer engine unit.
One problem with the design of the conventional printer is the fact that the processing of image data and the serialization of image data have been recognized as two vital but mutually leveraged tasks for the CPU of the conventional printer controllers. In the development of image data, printer commands are rendered into bit map image data. For example, a printer command may instruct the printer to draw a line and the CPU of the printer controller would calculate the placement of the dots on a piece of paper that would produce the visual image of a line. This process requires a powerful CPU in the printer controller to execute a variety of task programs where multiple memory accesses and many arithmetic operations will have to be performed. In the serialization of image data, image data is read from the bit map buffer, converted from a parallel format to a serial format, and sent as video data to the printer marking engine. Again, these tasks further demand a powerful CPU for the printer controller to coordinate and perform all these tasks.
Another disadvantage associated with conventional printer controllers is the amount of memory required on board the printer controller. One of the most important aspects of a printer controller is to provide a correct printed page without incurring "under-printing". Under-printing is a fatal error condition for the printer where the printer engine is doing the marking but the printer controller is unable to supply serial video data continuously and fast enough to print a complete page. Without video data when the engine is printing, the engine does not know what to mark and the page would not be correctly and completely printed. To ensure a complete and correct print-out of a page, the image data for an entire page has to be rendered before starting the serialization of image data to the printer engine.
When the serialization of image data is started, the processing of image data has to be stopped. This mutually exclusive arrangement effectively prevents the risk of under-printing for all types of printer engine. This strategy may not make the print throughput worse, but it requires a larger memory size to accommodate an entire page of image data, and adding memory chips to a printer controller is expensive.
Once it was understood that the utilization of memory was the primary cost issue for printer controller designs, the banding bit map buffer technique was developed. Theoretically, if the image data processing speed were better than, or at least as good as, the image data serialization speed, there would always be image data available to send to the printer engine, and serialization could begin before an entire page was developed. Thus, the memory space previously needed to store an entire page of image data was no longer necessary and a printer controller could be designed with less memory. Practically, however, since every printer controller has its limitations in terms of performance, memory space of a certain size would be reserved as a buffer to cover under-printing.
In contemporary printer controllers, one approach disclosed in U.S. Pat. No. 5,058 037 introduces a task schedule program and task control table for the CPU to manage the tasks of image data processing and serialization. By executing different task programs, the CPU processes image data, serializes image data, and controls the processing and the serialization tasks. As mentioned before, image data processing and image data serialization are two mutually exclusive but tightly correlated tasks for the printer controller. On one hand, both tasks must allocate enough time to generate sufficient data to meet the printer throughput. On the other hand, each task must leave enough time for the other task to complete its function. To solve this conflict, the disclosed apparatus introduced a task schedule program to control the execution time of the CPU in order to have both tasks performed without conflict. This technique may successfully accomplish the job, but the task schedule program approach does not alleviate the need for a powerful CPU and it does not reduce memory requirement.
Another U.S. Pat. No. 5,136,688 introduced the concept of an intermediate data format that a CPU could easily generate to balance the task of image data processing and image data serialization. The patent suggests that the controller CPU translate the drawing commands received from the host computer into intermediate data before printing is begun. This is a very time consuming task which would have to be completed before printing is commenced. Therefore, once printing is started, the CPU would take very little effort to convert intermediate data into image data, and there will be more time for image data serialization. The conflict between the processing of image data and serialization may well be prevented by this technique, but the translation of drawing commands into intermediate data is time consuming and can not be neglected when considering the overall printer performance. This would reduce printer throughput, and may require more memory to accommodate intermediate data. Moreover, the controller CPU load would not be reduced, and on the contrary, the demand for a powerful CPU would be even higher.